home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / fb386smp / fs / fs32.bas < prev   
BASIC Source File  |  1994-09-20  |  12KB  |  307 lines

  1. 1000 '================================================================
  2. 1010 '         32KÉF+âeâLâXâgùpâtâ@âCâïâZâîâNâ^
  3. 1020 '================================================================
  4. 1030 CLEAR ,,,,1024:LOADM "DOS.REX",0
  5. 1040 SCREEN@ 1:CLS
  6. 1050 GOSUB *F_Åëè·ë╗
  7. 1060 F_POSX=10:F_POSY=5:GOSUB *F_âtâ@âCâïâZâîâNâ^
  8. 1070 CLS
  9. 1080 PRINT "ĵô╛é╡é╜âhâëâCâuû╝:";F_FILEDRV$
  10. 1090 PRINT "ĵô╛é╡é╜âpâXû╝    :";F_FILEPATH$
  11. 1100 PRINT "ĵô╛é╡é╜âtâ@âCâïû╝:";F_FILENAME$
  12. 1110 A$=INPUT$(1):GOTO 1060
  13. 1120 '----------------------------------------------------------------
  14. 1130 *F_Åëè·ë╗
  15. 1140 '----------------------------------------------------------------
  16. 1150  DEFLNG F
  17. 1160  SEACHICNSEL&=0:MEMCPY&=5   :GETFREESPACE&=10:ISFIXED&=15:ISEXIST&=20
  18. 1170  FINDFIRST&=25 :FINDNEXT&=30:GETDRV&=35      :GETDIR&=40
  19. 1180 '
  20. 1190  DIM F_DRV(26)  ,F_NAME$(0) ,F_SIZE&(0) ,F_ATTR&(0),F_DATE$(0)
  21. 1200  DIM F_BTNX1(18),F_BTNY1(18),F_BTNX2(18),F_BTNY2(18)
  22. 1210  DIM F_ICN(9),F_PAT(((32*32/8)+3)/4+1),F_PAT1(((32*32/8)+3)/4+1)
  23. 1220 '
  24. 1230  F_BACKR=64:F_LWHITER=170
  25. 1240  F_BACKG=64:F_LWHITEG=170
  26. 1250  F_BACKB=64:F_LWHITEB=170
  27. 1260  F_NUM=0:F_WLD$="":F_STR$=SPACE$(100)
  28. 1270  F_ICN_SEC=CALLM(SEACHICNSEL&)
  29. 1280 '
  30. 1290  RESTORE *F_â{â^âôê╩Æuâfü[â^
  31. 1300  FOR F_I=0 TO 9
  32. 1310   READ F_BTNX1(F_I),F_BTNY1(F_I),F_BTNX2(F_I),F_BTNY2(F_I)
  33. 1320  NEXT
  34. 1330  FOR F_I=10 TO 17
  35. 1340   F_BTNX1(F_I)=F_BTNX1(9):F_BTNX2(F_I)=F_BTNX2(9)
  36. 1350   F_BTNY1(F_I)=F_BTNY1(F_I-1)+1:F_BTNY2(F_I)=F_BTNY2(F_I-1)+1
  37. 1360  NEXT
  38. 1370 '
  39. 1380 RESTORE *F_âAâCâRâôâfü[â^:FOR F_I=0 TO 9:READ F_ICN(F_I):NEXT
  40. 1390 RETURN
  41. 1400 '
  42. 1410 *F_â{â^âôê╩Æuâfü[â^
  43. 1420  DATA  0, 1, 2, 1,  3, 1, 5, 1,  6, 1, 8, 1, 33, 1,46, 1
  44. 1430  DATA 48, 9,49, 9, 48,10,49,10, 36,11,41,11, 44,11,49,11
  45. 1440  DATA 11,11,24,11, 10, 2,46, 2
  46. 1450 *F_âAâCâRâôâfü[â^
  47. 1460 DATA 70,0,72,77,0,77,76,78,69,79
  48. 1470 '
  49. 1480 '----------------------------------------------------------------
  50. 1490 *F_âtâ@âCâïâZâîâNâ^
  51. 1500 '----------------------------------------------------------------
  52. 1510  F_FILENAME$="":F_FILEPATH$="":F_FILEDRV$="":F_TOP=0
  53. 1520  MOUSE 0:MOUSE 1,160,120,1:F_SHAPE=80:GOSUB *F_â}âEâXâJü[â\âïÉ▌ÆΦ
  54. 1530  GOSUB *F_ëµû╩ò\Ī
  55. 1540  GOSUB *F_âhâëâCâuÅεò±Äµô╛:GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
  56. 1550  GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
  57. 1560 *F_LOOP
  58. 1570  GOSUB *F_â}âEâXâ{â^âôâ`âFâbâN
  59. 1580  ON F_BTN+1 GOTO 1690,1760,1810,1870,1930,1960,1990,2050,2070
  60. 1590 '---âèâXâg
  61. 1600  F_I=F_TOP+F_BTN-8:IF F_I>F_NUM GOTO *F_LOOP
  62. 1610  IF F_ATTR&(F_I) = &H10 THEN
  63. 1620    F_CMD$="cd "+F_NAME$(F_I):SHELL F_CMD$:GOTO 1760
  64. 1630  ELSE
  65. 1640    F_FILENAME$=LEFT$(F_NAME$(F_I)+SPACE$(14),12)
  66. 1650    LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
  67. 1660  ENDIF
  68. 1670  GOTO *F_LOOP
  69. 1680 '---<
  70. 1690  IF F_DRV(0)-1<>0 THEN F_DRV(0)=F_DRV(0)-1 ELSE F_DRV(0)=26
  71. 1700  IF F_DRV(F_DRV(0))<0 THEN 1690
  72. 1710  LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
  73. 1720  F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
  74. 1730  WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
  75. 1740  IF F_BTN_ATR=0 THEN 1760 ELSE *F_LOOP
  76. 1750 '---A
  77. 1760  F_CMD$=CHR$(&H40+F_DRV(0))+":":SHELL F_CMD$
  78. 1770  GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
  79. 1780  F_TOP=0:GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
  80. 1790  GOTO *F_LOOP
  81. 1800 '--->
  82. 1810  IF F_DRV(0)+1<>27 THEN F_DRV(0)=F_DRV(0)+1 ELSE F_DRV(0)=1
  83. 1820  IF F_DRV(F_DRV(0))<0 THEN 1810
  84. 1830  LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
  85. 1840  F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
  86. 1850  WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
  87. 1860  IF F_BTN_ATR=0 THEN 1760 ELSE *F_LOOP
  88. 1870 '---Ée
  89. 1880  CALLM GETDIR&,0,VARPTR(F_STR$)
  90. 1890  IF LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))=CHR$(0) THEN 1910
  91. 1900  SHELL "cd .."
  92. 1910  GOTO 1760
  93. 1920 '---ü¬
  94. 1930  IF F_TOP<>0 THEN F_TOP=F_TOP-1:GOSUB *F_âtâ@âCâïû╝ò\Ī
  95. 1940  GOTO *F_LOOP
  96. 1950 '---ü½
  97. 1960  IF F_TOP<F_NUM-10 THEN F_TOP=F_TOP+1:GOSUB *F_âtâ@âCâïû╝ò\Ī
  98. 1970  GOTO *F_LOOP
  99. 1980 '---Ä└ìs
  100. 1990  IF F_FILENAME$="" THEN *F_LOOP
  101. 2000  CALLM GETDIR&,0,VARPTR(F_STR$)
  102. 2010  F_FILEPATH$="\"+LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))
  103. 2020  F_FILEDRV$=CHR$(&H40+F_DRV(0))
  104. 2030  GOTO *F_BYE
  105. 2040 '---ĵÅ┴
  106. 2050  F_FILENAME$="":F_FILEPATH$="":GOTO *F_BYE
  107. 2060 '---ò╢ÄÜ
  108. 2070  LOCATE F_POSX+12,F_POSY+11:PRINT SPACE$(12)
  109. 2080  LOCATE F_POSX+12,F_POSY+11:LINE INPUT"",F_FILENAME$
  110. 2090  F_FILENAME$=LEFT$(F_FILENAME$+SPACE$(12),12)
  111. 2100  LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
  112. 2110  GOTO *F_LOOP
  113. 2120 *F_BYE
  114. 2130  MOUSE 5
  115. 2140 RETURN
  116. 2150 '----------------------------------------------------------------
  117. 2160 *F_â}âEâXâ{â^âôâ`âFâbâN
  118. 2170 '----------------------------------------------------------------
  119. 2180  F_BTN=-1:F_BTN_ATR=0
  120. 2190  WHILE F_BTN=-1
  121. 2200   WHILE MOUSE(2,0)=0:WEND:F_X=MOUSE(0):F_Y=MOUSE(1)
  122. 2210   F_I=0
  123. 2220   WHILE F_I<=17 AND F_BTN=-1
  124. 2230    F_X1=(F_POSX+F_BTNX1(F_I))*4:F_X2=(F_POSX+F_BTNX2(F_I))*4+7
  125. 2240    F_Y1=(F_POSY+F_BTNY1(F_I))*9.5!:F_Y2=(F_POSY+F_BTNY2(F_I))*9.5!+9
  126. 2250    IF F_X1<=F_X AND F_X2>=F_X AND F_Y1<=F_Y AND F_Y2>=F_Y THEN
  127. 2260      LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
  128. 2270      IF F_I<>4 AND F_I<>5 THEN WHILE MOUSE(2,0) OR MOUSE(2,1):WEND
  129. 2280      LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
  130. 2290      F_BTN=F_I
  131. 2300    ENDIF
  132. 2310    F_I=F_I+1
  133. 2320   WEND
  134. 2330  WEND
  135. 2340  IF F_BTN<>4 AND F_BTN<>5 THEN F_BTN_ATR=MOUSE(3,0):WAIT 20:F_BTN_ATR=MOUSE(3,0)
  136. 2350 RETURN
  137. 2360 '-----------------------------
  138. 2370 *F_ëµû╩ò\Ī
  139. 2380 '-----------------------------
  140. 2390  LINE((F_POSX)*4,(F_POSY)*9.5!)-((F_POSX+52)*4,(F_POSY+13)*9.5!),PSET,[F_BACKR,F_BACKG,F_BACKB],BF
  141. 2400  LINE((F_POSX)*4,(F_POSY)*9.5!)-((F_POSX+52)*4,(F_POSY+13)*9.5!),PSET,[F_LWHITER,F_LWHITEG,F_LWHITEB],B
  142. 2410  LINE((F_POSX+10)*4,(F_POSY+2)*9.5!-1)-((F_POSX+48)*4,(F_POSY+11)*9.5!-1),PSET,[F_LWHITER,F_LWHITEG,F_LWHITEB],B
  143. 2420  LOCATE F_POSX+48,F_POSY+ 9:PRINT "ü¬"
  144. 2430  LOCATE F_POSX+48,F_POSY+10:PRINT "ü½"
  145. 2440  LOCATE F_POSX+33,F_POSY+ 1:PRINT "ÉeâfâBâîâNâgâè"
  146. 2450  LOCATE F_POSX+11,F_POSY+11:PRINT "[            ]"
  147. 2460  LOCATE F_POSX+36,F_POSY+11:PRINT "[Ä└ìs]  [ĵÅ┴]"
  148. 2470 RETURN
  149. 2480 '-----------------------------
  150. 2490 *F_âhâëâCâuÅ≤ï╡ò\Ī
  151. 2500 '-----------------------------
  152. 2510  LOCATE F_POSX+1,F_POSY+1:PRINT "üâ ";AKCNV$(CHR$((F_DRV(0)+&H40)));" üä"
  153. 2520  F_FREE=CALLM(GETFREESPACE&,0)
  154. 2530  LOCATE F_POSX,F_POSY+3
  155. 2540  IF F_FREE<0 THEN PRINT "ü@ö±ÅÇö⌡"
  156. 2550  IF F_FREE>=0   AND F_FREE<1024 THEN PRINT USING "###### B";F_FREE
  157. 2560  IF F_FREE>1024 AND F_FREE<1024*1024 THEN PRINT USING "####.#KB";F_FREE/1024
  158. 2570  IF F_FREE>1024*1024 THEN PRINT USING "####.#MB";F_FREE/1024/1024
  159. 2580  FOR F_I=1 TO 9:LOCATE F_POSX+10,F_POSY+F_I+1:PRINT SPACE$(37);:NEXT
  160. 2590 '
  161. 2600  CALLM GETDIR&,0,VARPTR(F_STR$)
  162. 2610  F_I=INSTR(F_STR$,CHR$(0)):F_J=F_I
  163. 2620  WHILE F_I>1 AND MID$(F_STR$,F_I,1)<>"\":F_I=F_I-1:WEND
  164. 2630  LOCATE F_POSX+11,F_POSY+1
  165. 2640  PRINT "["+LEFT$(MID$(F_STR$,F_I,F_J-F_I)+SPACE$(13),12)+"]"
  166. 2650 '
  167. 2660  LINE((F_POSX+3)*4,(F_POSY+4)*9.5!)-((F_POSX+3)*4+23,(F_POSY+4)*9.5!+23),PSET,[F_BACKR,F_BACKG,F_BACKB],BF
  168. 2670  IF F_FREE>=0 THEN
  169. 2680    CALLM MEMCPY&,&H14,VARPTR(F_PAT(0)),F_ICN_SEC,16+F_ICN(F_DRV(F_DRV(0)))*24*24/4,24*24/8
  170. 2690    PUT@((F_POSX+3)*4,(F_POSY+4)*9.5!)-((F_POSX+3)*4+23,(F_POSY+4)*9.5!+23),F_PAT,,7
  171. 2700  ENDIF
  172. 2710 RETURN
  173. 2720 '-----------------------------
  174. 2730 *F_âtâ@âCâïû╝ò\Ī
  175. 2740 '-----------------------------
  176. 2750  F_I=1
  177. 2760  WHILE F_I<=9 AND F_I+F_TOP<F_NUM
  178. 2770   LOCATE F_POSX+10,F_POSY+F_I+1
  179. 2780   IF F_ATTR&(F_I+F_TOP)=&H10 THEN
  180. 2790    PRINT "<";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(20),12);">";
  181. 2800    PRINT SPACE$(8)+F_DATE$(F_I+F_TOP)
  182. 2810   ELSE
  183. 2820    PRINT " ";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(14),12);
  184. 2830    PRINT " ";RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP)),8);
  185. 2840    PRINT F_DATE$(F_I+F_TOP)
  186. 2850  ENDIF
  187. 2860  F_I=F_I+1
  188. 2870  WEND
  189. 2880 RETURN
  190. 2890 '-----------------------------
  191. 2900 *F_âhâëâCâuÅεò±Äµô╛
  192. 2910 '-----------------------------
  193. 2920  FOR F_I=1 TO 26:F_DRV(F_I)=CALLM(ISEXIST&,F_I):NEXT
  194. 2930 FOR F_I=1 TO 16
  195. 2940  F_DRV(F_I)=CALLM(ISEXIST&,F_I)
  196. 2950  IF F_DRV(F_I)>=0 THEN
  197. 2960    F_DRV(F_I)=INP(&H